package com.daji.search_and_sort;

import java.util.Arrays;

import javax.swing.text.html.MinimalHTMLWriter;

/* 
 * 选择排序
 */
public class SelectionSort {
    public static void main(String[] args) {
        int[] arr = { 7, 6, 12, -11, 5, 12, 0, 3, 7, 20 };
        selectionSort(arr);
        System.out.println(Arrays.toString(arr));
    }

    // 选择排序
    private static void selectionSort(int[] arr) {
        
        //外层for找到最小并标记
        for (int i = 0; i < arr.length; i++) {
            int min = arr[i];   //最小的值
            int minIndex = i;   //最小的索引（键）
            
            //内层for找到最小
            for (int j = i; j < arr.length; j++) {
                //已经找到最小元素，将最小元素和起始位置交换
                if (arr[j] < min) {
                    min = arr[j];
                    minIndex = j;
                }
            }
            //找完了最小，让最小值和数组首部元素交换(让i号元素和minIndex号元素互换位置)
            swop(arr,i,minIndex);
        }
    }

    private static void swop(int[] arr, int i, int minIndex) {
        int temp = arr[i];
        arr[i] = arr[minIndex];
        arr[minIndex] = temp;
    }
}
